package com.power.sifa.approve.service;

import com.plf.common.domain.ResponseDTO;
import com.power.sifa.approve.model.Material_attach;
import org.springframework.data.domain.Page;
import com.power.sifa.approve.model.Apl_matter_attach;
import com.power.sifa.approve.model.pageInfo.Apl_matter_attachPageInfo;

import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 *  申请材料业务层
 */
public interface Apl_matter_attachService {

    /**
     *  根据id获取申请材料对象
     */
    Apl_matter_attach getById(Serializable id);

    /**
     *  根据传入申请材料对象进行新增或更新操作
     */
    void saveOrUpdate(Apl_matter_attach apl_matter_attach);

    /**
     *  根据id删除申请材料
     */
    void removeById(Serializable id);

    /**
     *  根据传入条件查询申请材料分页结果
     */
    Page<Apl_matter_attach> findAll(Apl_matter_attachPageInfo pageInfo);

    /**
     * 查询全部申请材料
     */
    List<Apl_matter_attach> findAll();

     /**
     *  根据id批量删除申请材料
     */
    void removeByIds(List<Integer> list);

     /**
     *  批量保存申请材料
     */
    void saveAll(List<Apl_matter_attach> list);

    /**
     * 初始化申请材料
     * @param applyid   申请id
     * @param matid     事项id
     * @return
     */
    List<Apl_matter_attach> init(String applyid, String matid);

    /**
     * 根据申请id获取申请材料列表及附件
     * @param applyid   申请id
     * @return
     */
    List<Apl_matter_attach> queryListAndFileByApplyid(String applyid);

    /**
     * 下载所有材料
     * @param applyid   申请id
     * @param response
     */
    void downloadMaterialAll(String applyid, HttpServletResponse response) throws Exception;

    /**
     * 获取材料附件列表
     * @param materialMapList   材料附件Map{material_name:材料名称, attach_id:附件id}
     * @param attachIds     附件ids
     * @return
     */
    List<Material_attach> getMaterialAttachList(List<Map> materialMapList, List<String> attachIds);

    /**
     * 校验申请材料是否上传
     * @param applyid   申请id
     * @return
     */
    ResponseDTO check(String applyid);

    /**
     * 根据条件刷新申请所需材料
     * @param applyid 申请id
     * @param matid   事项id
     * @param types   类型条件
     */
    void refresh(String applyid, String matid, List<String> types);

    /**
     * 查询第三人的材料
     *
     * @param applyid
     * @return
     */
    List<Apl_matter_attach> queryThirdPersonMaterial(String applyid);
}
